package com.hzw.saas.api.hpc;

import java.util.List;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.hzw.saas.api.product.dto.HpcItemDto;
import com.hzw.saas.common.config.util.PageParam;

/**
 * <p>
 * 超算中心商品表 服务类
 * </p>
 *
 * @author zzl
 * @since 2021-01-21
 */
public interface IHpcItemService {

    /**
     * 获取商品详情
     * @param itemId 商品id
     * @return 商品详情
     */
    HpcItemDto get(String itemId);

    /**
     *
     * @param hpcId
     * @return
     */
    List<HpcItemDto> getAll(String hpcId);

    /**
     * 分页获取商品列表
     * @param pageParam 分页参数，若为null或当前页小于1则不分页
     * @param hpcId 超算中心ID
     * @return 商品列表
     */
    IPage<HpcItemDto> list(PageParam pageParam, String hpcId);

    /**
     * 增加商品
     * @param hpcItemDto 商品详情
     * @return 商品详情，包含生成的商品id
     */
    HpcItemDto add(HpcItemDto hpcItemDto);

    /**
     * 更新商品信息
     * @param hpcItemDto 商品详情，无需根新的字段设为null
     * @return 成功true/失败false
     */
    boolean update(HpcItemDto hpcItemDto);

    /**
     * 删除商品
     * @param itemId 商品id
     * @return 被删除的商品详情
     */
    HpcItemDto delete(String itemId);

    /**
     * 校验超算帐号是否能购买当前商品
     * @param itemId 商品ID
     * @param hpcAccountId 超算帐号ID
     * @return 成功true/失败false
     */
    boolean verify(String itemId, String hpcAccountId);

}
